package com.shrct.businessprocess.project;

import com.shrct.businessprocess.project.RCCustomerContract;
import com.shrct.businessprocess.project.RCCustomerContractMoneyAcceptAssignment;
import com.shrct.businessprocess.project.RCRealMoney;
import com.shrct.businessprocess.project.impl.RCCustomerContractMoneyAcceptImpl;
import com.shrct.businessprocess.project.proxy.RCCustomerContractMoneyAcceptProxy;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import java.util.Collection;
import java.util.Date;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;

@EntityImplementation(implementBy = RCCustomerContractMoneyAcceptImpl.class)
public interface RCCustomerContractMoneyAccept extends IModelObject {
  public abstract RCCustomerContract getContract();
  
  public abstract RCCustomerContractMoneyAccept setContract(final RCCustomerContract contract);
  
  public abstract Date getAcceptDate();
  
  public abstract RCCustomerContractMoneyAccept setAcceptDate(final Date acceptDate);
  
  public abstract RCRealMoney getAcceptMoney();
  
  public abstract RCCustomerContractMoneyAccept setAcceptMoney(final RCRealMoney acceptMoney);
  
  public abstract String getComment();
  
  public abstract RCCustomerContractMoneyAccept setComment(final String comment);
  
  public abstract Boolean getAssignFinished();
  
  public abstract RCCustomerContractMoneyAccept setAssignFinished(final Boolean assignFinished);
  
  public abstract Collection<RCCustomerContractMoneyAcceptAssignment> getAssignments();
  
  public abstract RCCustomerContractMoneyAcceptAssignment createAndAddtoAssignments();
  
  public abstract RCCustomerContractMoneyAcceptAssignment createAndAddtoAssignments(final Procedure1<RCCustomerContractMoneyAcceptAssignment> updater);
  
  public abstract RCCustomerContractMoneyAccept removeFromAssignments(final RCCustomerContractMoneyAcceptAssignment rCCustomerContractMoneyAcceptAssignment);
  
  public abstract RCCustomerContractMoneyAccept removeAllAssignments();
  
  public abstract void monyAssigned();
  
  public abstract RCRealMoney getTotalAssignedMoney();
  
  public abstract RCRealMoney getRemainMoney();
  
  public abstract RCCustomerContractMoneyAcceptProxy toProxy();
}
